<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.尾部增 push()  改变原数组
        // 2.尾部删 pop()   改变原数组
        // 3.头部增 unshift()   改变原数组
        // 4.头部删 shift() 改变原数组
        // 5.合并 concat() 不会改变原数组
        // 6.查 indexOf()   查找改元素，存在则返回元素的下标，否则返回-1
        // 7.查 includes()  查找元素，存在返回 true否则返回 false
        // 8.转字符串 join()  转字符串，默认用、拼接
        // 9.slice(start,end)   截取  返回截取的数组，不会改变原数组，start是开始下标，end是结束下标（但不包括自身）
        // 10.splice(start,deleteCount,item1,item2...)  截取/新增/删除 
            // start开始的下标(包括自身)，deleteCount要截取的个数 ，item是要添加的元素 
            // 如果deleteCount为 0，则不删除元素，从 start开始添加后面几个元素
            // 返回值：由被删除的元素组成的数组，如果没有删除则返回空数组
            // 改变原数组
        // 11.severse()  翻转   返回翻转后的数组，改变原数组
        // 12.sort(function(a,b){return a-b})   排序  
            // 参数：sort接受一个可选参数，该参数是一个比较函数，它定义了如何排序数组的元素。
            // 比较函数：该函数接受两个参数，如果第一个参数位于第二个参数之前，则返回负数；若两参数相等，则返回 0，若第一个参数位于第二个参数之后，则返回正数。
            // 默认排序:按照字母升序排序，排序可以是数字或字母。

        // 13.toString() 转字符串    转字符串，只用、拼接
        // 14.every()   检测每个元素是否符合指定条件  
            // 如果检测数组中有一个元素不符合条件，终止后续检测，整个表达式返回 false,所有元素都满足条件才返回 true
            // 返回值：布尔值
            // 参数：arr.every(callback(element[, index[, array]])[, thisArg])
                    // *  element:必须。当前正在处理的数组元素
                    // *  index：可选。当前元素的索引。
                    // *  array：当前元素属于的数组对象
        // 15.filter()  过滤  
            // 不会改变原数组
            // 会创建一个新的数组，该数组是由符合指定条件的元素组成的
            // 参数：arr.filter(callback(element[, index[, array]])[, thisArg])
                // *  element:必须。当前正在处理的数组元素
                // *  index：可选。当前元素的索引。
                // *  array：当前元素属于的数组对象
        // 16.Array.from()  将对象或类数组转成数组
        // 17.map() 便利。
            // 会返回一个新的数组，数组中的元素是原始数组调用函数处理后的值
            // 不会改变原数组
            // 参数：arr.map(callback(element[, index[, array]])[, thisArg])
                // *  element:必须。当前正在处理的数组元素
                // *  index：可选。当前元素的索引。
                // *  array：当前元素属于的数组对象
        // 18.some() 检测每个元素是否符合指定条件
            // 如果检测其中一个符合条件则返回 true，剩下的元素不再检测
            // 全部元素没有满足条件才返回 false
            // 返回值：布尔值boolean
            // 参数：arr.some(callback(element[, index[, array]])[, thisArg])
                // *  element:必须。当前正在处理的数组元素
                // *  index：可选。当前元素的索引。
                // *  array：当前元素属于的数组对象
        let array1 = [5,6,7,8]
        let pusharr2 = array1.push(2)   //返回新增后的元素个数
        console.log(array1,pusharr2);// [5,6,7,8,2] 5
        // 2
        let array2 = [5,6,7,8]
        let pop3 = array2.pop() //返回被删除的元素
        console.log(array2,pop3);// [5,6,7] 8
        // 3
        let array3 = [5,6,7,8]
        let unshiftArr = array3.unshift(1) //返回的是新增后元素的个数
        console.log(array3,unshiftArr);//[1,5,6,7,8] 5
        // 4
        let array4 = [5,6,7,8]
        let shiftArr = array4.shift()   //返回被删除的元素
        console.log(array4,shiftArr);   //[6,7,8]   5
        // 5
        let array5 =  [5,6,7,8]
        let array5_2 =[9,10]
        let concatArray = array5.concat(array5_2)
        console.log(array5,concatArray);    //[5,6,7,8],[5,6,7,8,9,10]
        // 6   
        let array6 = [5,6,7,8]
        let indexOfArr = array6.indexOf(5)
        let indexOfArr_2 = array6.indexOf(10)
        console.log(indexOfArr,indexOfArr_2); //0   -1
        // 7
        let array7 = [5,6,7,8]
        let includesArr = array7.includes(8)
        let includesArr_2 = array7.includes(10)
        console.log(includesArr,includesArr_2);   //true false
        // 8
        let array8 = [5,6,7,8]
        let joinArr = array8.join("*")
        console.log(joinArr);   //'5*6*7*8'
        // 9
        let array9 = [5,6,7,8]
        let sliceArr = array9.slice(1,3)
        console.log(sliceArr,array9);   //[6,7] [5,6,7,8]
        // 10
        let array10 = [5,6,7,8]
        // let spliceArr = array10.splice(0,2)
        // console.log(spliceArr,array10); //[5,6] [7,8]
        let spliceArr_2 = array10.splice(1,0,'H','R','W')
        console.log(spliceArr_2,array10); // [] [5,'H','R','W',6,7,8]   
        let spliceArr_3 = array10.splice(1,3,'N','B')
        console.log(spliceArr_3,array10);   //['H','R','W'] [5,'N','B',6,7,8]
        let spliceArr_4 = array10.splice(1)
        console.log(spliceArr_4,array10)    //['N','B',6,7,8] [5]
        // 11reverse()
        let array11 = [5,6,7,8]
        let reverseArr = array11.reverse()
        console.log(reverseArr,array11);    //[8,7,6,5] [8,7,6,5]
        //  12sort()
        let array12 = ['c','b','a']
        let array12_2 = [12,2,5,54,13]
        // let sortArr = array12.sort()
        // console.log(sortArr,array12);  //['a', 'b', 'c'] ['a', 'b', 'c']
        // array12.sort((a,b)=>a-b)
        // array12_2.sort((a,b)=>a-b)
        // console.log(array12,array12_2); //['c','b','a']   [2, 5, 12, 13, 54]
        // array12_2.sort((a,b)=>a = b)
        // console.log(array12_2); //[12,2,5,54,13]
        array12_2.sort((a,b)=>b-a)
        console.log(array12_2); // [54, 13, 12, 5, 2]
        array12.sort((a,b)=>b-a)
        console.log(array12); // ['c','b','a']
        // 13
        let array13 = [5,6,7,8]
        let toStringArr = array9.toString()
        console.log(toStringArr);   //'5,6,7,8'
        // 14.every()
        let array14 = [18,18,54,34,51]
        let everyArr = array14.every(item=>{
          return item >=18
        })
        console.log(everyArr); //true
        // 15.filter()
        let array15 = [18,18,54,34,51,'a','b,','c']
        let filterArr = array15.filter(item=>{
            return typeof item === 'number' && item % 2 == 0
        })
        console.log(filterArr,array15);
        //  16.Array.from()
        let array16 = [2,2,4,5,6,8,5]
        let setArray16 = new Set(array16)
        let fromArr = Array.from(setArray16)
        console.log(fromArr,setArray16);
        // 17.map()
        let array17 = [2,2,4,5,6,8,5]
        let mapArr = array17.map(item=>{
            return item *2
        })
        console.log(mapArr,array17);
        // 18.some()
        let array18 = [2,2,4,5,6,8,5,18]
        let someArr = array18.some(item=>{
            return item >=18
        })
        console.log(someArr); //true
    </script>
</body>

</html>